package implememntstackbyqueue

// 使用队列实现栈 
type MyStack struct{
	enqueue []int  //压入
	dequeue []int // 弹出
}

func Constructor() MyStack {
	return MyStack{}
}

func (this *MyStack) Push(x int) {
	this.enqueue = append(this.enqueue, x)
}

func (this *MyStack) Pop() int{
	// enque->deque  然后输出
	n := len(this.enqueue)
	// 输出的是最后一个
	for i:=0;i<n-1;i++{
		this.dequeue = append(this.dequeue, this.enqueue[0])
		this.enqueue = this.enqueue[1:]  //出队操作
	}
	// 此时enque生一个
	res := this.enqueue[0]
	//交换指针
	this.enqueue = this.dequeue
	this.dequeue = []int{}
	return res
}

func (this *MyStack) Top() int {
	//得到头部
	return this.enqueue[len(this.enqueue)-1]
}

func (this *MyStack) Empty() bool {
	return len(this.enqueue)==0
}